package arithmetic.other;

/**
 * @author zhangyanqi
 * @since 1.0 2018/3/20
 * <p>
 * <p>
 * X星球特别讲究秩序，所有道路都是单行线。
 * 一个甲壳虫车队，共16辆车，按照编号先后发车，夹在其它车流中，缓缓前行。
 * <p>
 * 路边有个死胡同，只能容一辆车通过，是临时的检查站，如图所示。
 * X星球太死板，要求每辆路过的车必须进入检查站，也可能不检查就放行，也可能仔细检查。
 * 如果车辆进入检查站和离开的次序可以任意交错。那么，该车队再次上路后，可能的次序有多少种？
 * <p>
 * 为了方便起见，假设检查站可容纳任意数量的汽车。
 * 显然，如果车队只有1辆车，可能次序1种；2辆车可能次序2种；3辆车可能次序5种。
 */
public class 出栈次序 {


    /**
     * @param a 在公路上的车
     * @param b 在检查站里面的车
     * @return
     */
    static int getWays(int a, int b) {
        if (a == 0) {
            return 1;
        }
        if (b == 0) {
            return getWays(a - 1, 1);
        }
        return getWays(a - 1, b + 1) + getWays(a, b - 1);
    }


    public static void main(String[] args) {

        int ways = getWays(3, 0);
        System.out.println(ways);

    }
}
